home *** CD-ROM | disk | FTP | other *** search
- {
- A while back someone asked for a "cascade" type screen thingy, and a also a
- screen wipe that would look sort of like a TV screen powering down... Here
- they are... & I would like them to get into the next SWAG... 8)
- }
- Program Cascade1;
-
- {causes entire screen to "fall", character by character, to the bottom of the }
- { screen... }
- { }
- { Released for SWAG use! Use freely! }
- { }
- { But if you do use it, please let me know... }
- { }
- { Allen Walker - Crazy Train ][ (604)383-2201 }
- { }
-
- Uses CRT;
-
- Var MGAScreenMem:Array[0..1999] of Word Absolute $B000:0000;
- CGAScreenMem:Array[0..1999] of Word Absolute $B800:0000;
-
- Function Mono_Colour:Boolean;
- {Mono = False, Color = True}
- Var I,J,X,Y:Integer;
- A,B,C,D:Word;
- begin
- X:=WhereX-1; Y:=WhereY-1;
- C:=MGAScreenMem[Y*80+X]; D:=CGAScreenMem[Y*80+X];
- Write('A'+Chr(8));
- A:=MGAScreenMem[Y*80+X]; B:=CGAScreenMem[Y*80+X];
- MGAScreenMem[Y*80+X]:=C; CGAScreenMem[Y*80+X]:=D;
- If (A mod 256) =$41 then begin Mono_Colour:=False; Exit; end;
- If (B mod 256) =$41 then begin Mono_Colour:=True; Exit; end;
- end;
-
- Procedure Cascade;
- Var L,I,X : Word;
- MC : Boolean;
- begin
- MC:=Mono_Colour;
- For L:=1 to 25 do
- begin
- For I:=1999 downto 80 do
- begin
- If MC then
- begin
- If (CGAScreenMem[I] and $70FF =32) and
- (CGAScreenMem[I-80] and $70FF <>32) then
- begin
- X:=CGAScreenMem[I]; CGAScreenMem[I]:=CGAScreenMem[I-80];
- CGAScreenMem[I-80]:=X;
- end;
- end
- else
- begin
- If (MGAScreenMem[I] and $70FF =32) and
- (MGAScreenMem[I-80] and $70FF <>32) then
- begin
- X:=MGAScreenMem[I]; MGAScreenMem[I]:=MGAScreenMem[I-80];
- MGAScreenMem[I-80]:=X;
- end;
- end;
- end;
- Delay(100);
- end;
- end;
-
- begin
- Cascade;
- end.
-
-
-
-
-
- Program CRTWipe;
- {Causes screen to wipe from bottom & top towards the middle, then from the }
- { sides to the center... }
- { }
- { Released for SWAG use! Use freely! }
- { }
- { But if you do use it, please let me know... }
- { }
- { Allen Walker - Crazy Train ][ (604)383-2201 }
- { }
- Uses CRT;
-
- Var MGAScreenMem:Array[0..1999] of Word Absolute $B000:0000;
- CGAScreenMem:Array[0..1999] of Word Absolute $B800:0000;
- MC : Boolean;
-
- Function Mono_Colour:Boolean;
- {Mono = False, Color = True}
- Var I,J,X,Y:Integer;
- A,B,C,D:Word;
- begin
- X:=WhereX-1; Y:=WhereY-1;
- C:=MGAScreenMem[Y*80+X]; D:=CGAScreenMem[Y*80+X];
- Write('A'+Chr(8));
- A:=MGAScreenMem[Y*80+X]; B:=CGAScreenMem[Y*80+X];
- MGAScreenMem[Y*80+X]:=C; CGAScreenMem[Y*80+X]:=D;
- If (A mod 256) =$41 then begin Mono_Colour:=False; Exit; end;
- If (B mod 256) =$41 then begin Mono_Colour:=True; Exit; end;
- end;
-
- Procedure SetChar(N,Z:Word);
- begin
- If MC then CGAScreenMem[N]:=Z else MGAScreenMem[N]:=Z;
- end;
-
- Function ReadChar(N:Word):Word;
- begin
- If MC then ReadChar:=CGAScreenMem[N] else ReadChar:=MGAScreenMem[N];
- end;
-
- Procedure WipeIt;
- Var L,X,Y,Z : Word;
- begin
- MC:=Mono_Colour;
- For L:=1 to 12 do
- For Y:=12 downto 0 do
- begin
- For X:=0 to 79 do
- begin
- Z:=ReadChar(X+(80*Y)); SetChar(X+(80*Y)+80,Z); SetChar(X+(80*Y),1792);
- end;
- For X:=0 to 79 do
- begin
- Z:=ReadChar(X+(80*(25-Y))); SetChar(X+(80*(25-Y))-80,Z);
- SetChar(X+(80*(25-Y)),1792);
- end;
- end;
- Delay(100);
- For X:=0 to 39 do
- begin
- SetChar(X+960,1792); SetChar(1039-X,1792); Delay(10);
- end;
- end;
-
- begin
- WipeIt;
- end.